#set( $symbol_pound = '#' )
#set( $symbol_dollar = '$' )
#set( $symbol_escape = '\' )
/**
 * ${copyright}
 * Copyright (c) 2019. All Rights Reserved.
 */
package ${package}.basic.module.group.mapper;

import ${package}.common.bean.po.Group;
import ${package}.common.bean.po.Tree;
import ${package}.common.bean.vo.QueryBean;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * Description: 无法补充
 *
 * @author YL
 * @date 2019/8/6 15:28
 *
 * <pre>
 *              ${copyright}
 *      Copyright (c) 2019. All Rights Reserved.
 * </pre>
 */
@Repository
public interface GroupMapper {

    /**
     * Description:
     * <获取组织树，除去部门>
     * @author yangliu
     * @date 16:57 2019/8/6
     * @return java.util.List<Tree>
     **/
    List<Tree> getGroupTreeByType();

    /**
     * Description:
     * <获取组织树>
     * @author yangliu
     * @date 16:58 2019/8/6
     * @return java.util.List<Tree>
     **/
    List<Tree> getGroupTree();

    /**
     * Description:
     * <通过id查询机构>
     * @author yangliu
     * @date 16:58 2019/8/6
     * @param id 1
     * @return Group
     **/
    Group getGroupById(Long id);
    /**
     * Description:
     * <获取所有组织>
     * @author yangliu
     * @date 16:58 2019/8/6
     * @return java.util.List<Group>
     **/
    List<Group> findAllGroupByType();
    /**
     * Description:
     * <获取上级组织的所有下级组织>
     * @author yangliu
     * @date 16:59 2019/8/6
     * @param parentId 1
     * @return java.util.List<Group>
     **/
    List<Group> findChildGroup(Long parentId);

    /**
     * Description:
     * <按条件获取机构列表>
     * @author 周婷婷
     * @date 16:59 2019/8/6
     * @param queryBean 1
     * @return java.util.List<Group>
     **/
    List<Group> queryGroupListByLimit(QueryBean queryBean);

    /**
     * Description:
     * <获取机构类型列表>
     * @author 周婷婷
     * @date 16:59 2019/8/6
     * @return java.util.List<java.lang.Integer>
     **/
    List<Integer> getGroupTypeList();

    /**
     * Description:
     * <新增机构>
     * @author 周婷婷
     * @date 17:00 2019/8/6
     * @param group 1
     **/
    void insertGroup(Group group);

    /**
     * Description:
     * <根据机构编号查询机构>
     * @author 周婷婷
     * @date 17:00 2019/8/6
     * @param code 1
     * @return java.util.List<Group>
     **/
    List<Group> findGroupByCode(String code);

    /**
     * Description:
     * <根据机构编号查询机构时筛除传来的id数据>
     * @author 周婷婷
     * @date 17:00 2019/8/6
     * @param code 1
     * @param id 2
     * @return java.util.List<Group>
     **/
    List<Group> findGroupByCodeOrNotInId(String code, Long id);

    /**
     * Description:
     * <根据id更新机构信息>
     * @author 周婷婷
     * @date 17:01 2019/8/6
     * @param group 1
     **/
    void updateGroupById(Group group);

    /**
     * Description:
     * <根据id删除机构>
     * @author 周婷婷
     * @date 17:01 2019/8/6
     * @param id 1
     **/
    void deleteGroup(Long id);

    /**
     * Description:
     * <承担单位>
     * @author yangliu
     * @date 17:01 2019/8/6
     * @return java.util.List<Tree>
     **/
    List<Tree> bearerUnitGroupTree();

    /**
     * Description:
     * <获取全部单位>
     * @author yangliu
     * @date 17:02 2019/8/6
     * @return java.util.List<java.lang.Long>
     **/
    List<Long> queryAllGroup();

    /**
     * Description:
     * <通过id寻找子单位>
     * @author yangliu
     * @date 17:02 2019/8/6
     * @param ids 1
     * @return java.util.List<Group>
     **/
    List<Group> queryChildGroupByid(List<Long> ids);

    /**
     * Description:
     * <通过id寻找子部门>
     * @author yangliu
     * @date 17:03 2019/8/6
     * @param ids 1
     * @return java.util.List<Group>
     **/
    List<Group> queryChildDepartmentByid(List<Long> ids);
}
